//
//  Waffe.cs
//
//  Author:
//       Philipp Schröck <philsch@hotmail.de>
//
//  Copyright (c) 2013 Philipp Schröck
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU Lesser General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
using System;
using libcharakter.Talente.Kampf;
using libcharakter.Talente;
using System.Collections.Generic;

namespace libcharakter.ausrüstung.Waffen
{
    public struct TPKK
    {
        int kk;
        int tp;
    }
    public enum DK
    {
        H,
        N,
        HN,
        S,
        NS,
    }
    public enum WaffenType
    {
        Dolch,
        Fechtwaffe,
        Saebel,
        Schwert,
        Anderhalbhaender,
        ZweihandSchwertSaebel,
        Infanteriewaffe,
        Speer,
        Staebe,
        Hiebwaffe,
        ZweihandHiebwaffe,
        Kettenwaffe,
        Waffenlos,

        Wurfmesser,
        Wurfspeer,
        Wurfbeil,
        Ambrust,
        Bogen
    }

    [Serializable]
    public abstract class Waffe : Ausruestung
    {
        protected WaffenType m_waeponType;
        protected KampfTalent m_usingTalent;
        protected int m_at, m_pa;
        protected int m_plusTP;
        protected bool m_leichterWunde;

        //string name, decimal gewicht, int preis, AusruestungType type
        protected Waffe(string name, decimal gewicht, int preis, WaffenType type, int tp,
            bool fernkampf, int stapel,  bool lwunde)
            : base(name, gewicht, preis, (fernkampf ? AusruestungType.FernkampWaffe : AusruestungType.NahkampfWaffe), stapel)
        {
            m_waeponType = type;
            m_plusTP = tp;
            m_leichterWunde = lwunde;
        }





        public  int Schaden(Enemy ziel)
        {
            return Schaden(WuerfelList.GetNumber(6), ziel);
        }
        public virtual int Schaden(int w6, Enemy ziel)
        {
            return (w6 + m_plusTP) - ziel.RuestungsSchutz;
        }
    }
}

